home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 04 geoProgramming / HEXCLC.SDA / MATH (.txt) < prev    next >
Encoding:
GEOS ConVerT  |  2019-04-13  |  4.0 KB  |  278 lines

  1. SEQ formatted GEOS file V1.0
  2. Olivetti PR2300
  3. OP V2.0 or higher
  4. BLASTER'S CONVERTER V2.5
  5. COPE SOURCE V1.0
  6. DL870517
  7. COPE EDITOR V1.0
  8. ;MATH.ASSM
  9. ;MATH ROUTINES FOR THE ASSEMBLER
  10. ; GENERAL LIBRARY FILE
  11. ;*******
  12. CURNUM .BYTE 0,0
  13. PRENUM .BYTE 0,0
  14. WORD1 .BYTE 0,0
  15. WORD2 .BYTE 0,0
  16. CURFUN .BYTE 0
  17. PREFUN .BYTE 0
  18. STACK .Block 24,0
  19. STKPTR .BYTE 0
  20. CARRY .BYTE 32
  21. CURPRI .BYTE 0
  22. PREPRI .BYTE 0
  23. PRIFUN .BYTE 43,45,42,47,61,124,38,94
  24. PRILEV .BYTE 4,4,5,5,0,1,3,2
  25. JMPSTK JMP PSHSTK
  26. JMPTOL JMP TOTAL
  27. ;********
  28.  STA CURFUN
  29.  JSR FNDPRI
  30.  STY CURPRI
  31.  LDA RESULT
  32.  STA CURNUM
  33.  LDA RESULT+1
  34.  STA CURNUM+1
  35. ;LDA #32
  36. ;STA CARRY
  37.  LDA CURFUN
  38.  CMP #61
  39.  BEQ  JMPTOL
  40.  LDA Keyinlen
  41.  BNE LOPSTK
  42.  LDX STKPTR
  43.  BEQ LOPSTK
  44.  LDA CURFUN
  45.  STA STACK,X
  46. ;----*
  47. LUPSTK  LDA WORD1
  48.  STA CURNUM
  49.  STA RESULT
  50.  LDA WORD1+1
  51.  STA CURNUM+1
  52.  STA RESULT+1
  53. LOPSTK
  54.  LDX STKPTR
  55.  BEQ  JMPSTK
  56.  LDA STACK,X
  57.  STA PREFUN
  58.  JSR FNDPRI
  59.  STY PREPRI
  60.  LDA STACK,X
  61.  STA PRENUM+1
  62.  LDA STACK,X
  63.  STA PRENUM
  64.  STX STKPTR
  65.  LDA PREPRI
  66.  CMP CURPRI
  67.  BCC JMPNOT
  68.  LDA PRENUM
  69.  STA WORD1
  70.  LDA PRENUM+1
  71.  STA WORD1+1
  72.  LDA CURNUM
  73.  STA WORD2
  74.  LDA CURNUM+1
  75.  STA WORD2+1
  76.  LDA PREFUN
  77.  CMP #43
  78.  BEQ JMPPLS
  79.  CMP #45
  80.  BEQ JMPMIN
  81.  CMP #42
  82.  BEQ JMPMUL
  83.  CMP #47
  84.  BEQ JMPDIV
  85.  CMP #38
  86.  BEQ JMPAND
  87.  CMP #94
  88.  BEQ JMPEOR
  89.  CMP #124
  90.  BEQ JMPORA
  91. ;-------*
  92. JMPPLS JMP PLUS
  93. JMPMIN JMP MINUS
  94. JMPDIV JMP DIVIDE
  95. JMPMUL JMP MULTI
  96. JMPNOT JMP DOTHIN
  97. JMPAND JMP ANDNUM
  98. JMPEOR JMP EORNUM
  99. JMPORA JMP ORANUM
  100. ;----*
  101. TOTAL
  102.  LDA Keyinlen
  103.  BNE TLLOOP ;IF A NUM WAS ENTERED
  104. ; THEN CONTINUE AS ALWAYS
  105.  LDX STKPTR
  106.  BEQ TLLOOP
  107.  LDA STACK,X; PULL PREVIOUS NUM
  108.  STA CURNUM+1 ;  AND PLACE IT AS IF
  109. ; AS ENTERED WITH '='
  110.  LDA STACK,X
  111.  STA CURNUM
  112.  STX STKPTR
  113. TLLOOP JSR LOPSTK
  114.  LDX STKPTR
  115.  BEQ EXTTTL
  116.  LDA STACK,X
  117.  STA PREFUN
  118.  JSR FNDPRI
  119.  STY PREPRI
  120.  LDA STACK,X
  121.  STA RESULT+1
  122.  LDA STACK,X
  123.  STA RESULT
  124.  STX STKPTR
  125. EXTTTL
  126. ;--------*
  127. DOTHIN
  128.  LDA STKPTR
  129.  ADC #3
  130.  STA STKPTR
  131.  JMP PSHSTK
  132. ;-------*
  133.  LDA WORD1
  134.  ADC WORD2
  135.  STA WORD1
  136.  LDA WORD1+1
  137.  ADC WORD2+1
  138.  STA WORD1+1
  139.  BCC NOADDC
  140.  LDA #67
  141.  STA CARRY
  142. NOADDC
  143.  JMP LUPSTK
  144. ;----------*
  145. MINUS
  146.  LDA WORD1
  147.  SBC WORD2
  148.  STA WORD1
  149.  LDA WORD1+1
  150.  SBC WORD2+1
  151.  STA WORD1+1
  152.  BCS NOSUBC
  153.  LDA #67
  154.  STA CARRY
  155. NOSUBC
  156.  JMP LUPSTK
  157. ;---------*
  158. ANDNUM
  159.  LDA WORD1
  160.  AND WORD2
  161.  STA WORD1
  162.  LDA WORD1+1
  163.  AND WORD2+1
  164.  STA WORD1+1
  165.  JMP LUPSTK
  166. ;---------*
  167. ORANUM
  168.  LDA WORD1
  169.  ORA WORD2
  170.  STA WORD1
  171.  LDA WORD1+1
  172.  ORA WORD2+1
  173.  STA WORD1+1
  174.  JMP LUPSTK
  175. ;---------*
  176. EORNUM
  177.  LDA WORD1
  178.  EOR WORD2
  179.  STA WORD1
  180.  LDA WORD1+1
  181.  EOR WORD2+1
  182.  STA WORD1+1
  183.  JMP LUPSTK
  184. ;---------*
  185. MULTI
  186.  LDA #0
  187.  STA HIWORD
  188.  STA HIWORD+1
  189.  LDX #16
  190. MLLOOP ROR HIWORD+1
  191.  ROR HIWORD
  192.  ROR WORD2+1
  193.  ROR WORD2
  194.  BCC NXMULT
  195.  LDA WORD1
  196.  ADC HIWORD
  197.  STA HIWORD
  198.  LDA WORD1+1
  199.  ADC HIWORD+1
  200.  STA HIWORD+1
  201. NXMULT DEX
  202.  BPL MLLOOP
  203.  LDA HIWORD
  204.  ORA HIWORD+1
  205.  BEQ MULTI1
  206.  LDA #67
  207.  STA CARRY
  208. MULTI1
  209.  LDA WORD2
  210.  STA CURNUM
  211.  STA RESULT
  212.  LDA WORD2+1
  213.  STA CURNUM+1
  214.  STA RESULT+1
  215.  JMP LOPSTK
  216. HIWORD .BYTE 0,0
  217. ;---------*
  218. DIVIDE
  219.  LDA #0
  220.  STA HIWORD
  221.  STA HIWORD+1
  222.  LDA WORD2
  223.  ORA WORD2+1
  224.  BNE DIVOK
  225.  BCS DVDERR
  226. DIVOK
  227.  LDX #16
  228. DVLOOP
  229.  ROL WORD1
  230.  ROL WORD1+1
  231.  ROL HIWORD
  232.  ROL HIWORD+1
  233.  LDA HIWORD
  234.  SBC WORD2
  235.  LDA HIWORD+1
  236.  SBC WORD2+1
  237.  BCC DIVLP2
  238.  STY HIWORD
  239.  STA HIWORD+1
  240. DIVLP2
  241.  BNE DVLOOP
  242.  ROL WORD1
  243.  ROL WORD1+1
  244.  LDA HIWORD
  245.  ORA HIWORD+1
  246.  BEQ DVIDE1
  247.  LDA #67
  248.  STA CARRY
  249. DVIDE1
  250.  JMP LUPSTK
  251. DVDERR  RTS
  252. ;----------*
  253. PSHSTK
  254.  LDX STKPTR
  255.  LDA CURNUM
  256.  STA STACK,X
  257.  LDA CURNUM+1
  258.  STA STACK,X
  259.  LDA CURFUN
  260.  STA STACK,X
  261.  STX STKPTR
  262. ;--------*
  263. FNDPRI
  264. ; ON ENTRY A HOLDS VALUE TO LOOK UP
  265. ; ON EXIT Y HOLDS THE PRIORITY LEVEL.
  266. ; A&X CANNOT BE CHANGED.
  267.  STA FNDAVL
  268.  STX FNDXVL
  269.  LDX #255
  270. PRLOOP INX
  271.  CMP PRIFUN,X
  272.  BNE PRLOOP
  273.  LDY PRILEV,X
  274.  LDA FNDAVL
  275.  LDX FNDXVL
  276. FNDAVL .BYTE 0
  277. FNDXVL .BYTE 0
  278.